﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MS.InformationManagement.Core.Support;
using MS.InformationManagement.DAL.DTOs;
using Microsoft.SharePoint;
using MS.InformationManagement.DAL.DocumentCenter;

namespace MS.InformationManagement.BLL.ShippingControlTemplates
{
    public class CreateItemEnviosDeCorreoListCommand : IBaseCommand
    {
        #region Fields

        IEnumerable<PlanillasDTO> _foundItems;
        List<int> _itemsId = new List<int>();

        string _currentUser;

        #endregion

        #region Constructors

        public CreateItemEnviosDeCorreoListCommand(IEnumerable<PlanillasDTO> foundItems)
        {
            _foundItems = foundItems;
        }

        #endregion

        #region Implemented Methods

        public void Execute()
        {
            using (var dc = new DCDocumentCenterDataContext(SPContext.Current.Web.Url))
            {
                foreach (var entity in _foundItems)
                {
                    var element = (from item in dc.EnviosDeCorreo
                                  where item.Id == entity.IdItemMedioEnvio
                                  select item).FirstOrDefault();
                    if (element != null)
                    {

                        EnvíoDeCorrespondencia medio = new EnvíoDeCorrespondencia();

                        medio.BibliotecaDelDocumento = element.BibliotecaDelDocumento;
                        medio.City = element.City;
                        medio.Copia = element.Copia;
                        medio.CostoDelEnvío = element.CostoDelEnvío;
                        medio.ZonaEnvio = element.ZonaEnvio;
                        medio.Title = element.Title;
                        medio.Teléfono = element.Teléfono;
                        medio.RemitenteDestinatario = element.RemitenteDestinatario;
                        medio.PesoCorrespondencia = element.PesoCorrespondencia;
                        medio.NoRadicado = element.NoRadicado;
                        medio.MedioEnvioCorreo = element.MedioEnvioCorreo;
                        medio.IdDocumento = element.IdDocumento;
                        //medio.FechaDeEnvío = element.FechaDeEnvío;
                        medio.EnvioNacional = element.EnvioNacional;
                        medio.EnvioLocal = element.EnvioLocal;
                        medio.Enviado = false;
                        medio.Email = element.Email;
                        medio.Dirección = element.Dirección;

                        dc.EnviosDeCorreo.InsertOnSubmit(medio);
                        dc.SubmitChanges();
                        _itemsId.Add(element.Id.Value);
                    }
                }
            }
        }

        public void Undo()
        {
            using (var dc = new DCDocumentCenterDataContext(SPContext.Current.Web.Url))
            {
                foreach (int id in _itemsId)
                {
                    var entity = (from item in dc.EnviosDeCorreo
                                  where item.Id == id
                                  select item).FirstOrDefault();

                    dc.EnviosDeCorreo.DeleteOnSubmit(entity);
                    dc.SubmitChanges();
                }
            }
        }

        #endregion
    }
}
